package com.ruoyi.zsyh.controller.applet.raker;

import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.EmptyUtils;
import com.ruoyi.common.utils.IdWorker;
import com.ruoyi.zsyh.domain.*;
import com.ruoyi.zsyh.service.*;
import org.apache.commons.collections.map.HashedMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 服务订单 市县管理商
 */
@Controller
@RequestMapping("/applet/zsyh/serviceOrderRaker")
public class ZsyhServiceOrderRakerAppletController extends BaseController
{

    @Autowired
    private IZsyhServiceOrderService zsyhServiceOrderService;

    @Autowired
    private IZsyhServiceOrderApplymoneyService zsyhServiceOrderApplymoneyService;

    @Autowired
    private IZsyhUserRepairstoreService zsyhUserRepairstoreService;

    @Autowired
    private IZsyhPersonOrderService zsyhPersonOrderService;


    /**
     * 市县管理商 订单中心 各个状态的数字
     * @return
     */
    @RequestMapping("/getRakerServiceOrderNum")
    @ResponseBody
    public AjaxResult getRakerServiceOrderNum(String userId)throws Exception
    {
        ZsyhUserRepairstore store = zsyhUserRepairstoreService.selectZsyhUserRepairstoreByUserId(userId);
        String rakerId = store.getId();//市县id

        //orderState 订单状态 0未接单（厂家下单）1已接单 101已预约 102服务中 2已完成 201平台待审核 202厂家待审核 203待拨款 3已支付 4已评价 5已取消 501师傅申请取消 6系统自动取消
        ZsyhServiceOrder order = new ZsyhServiceOrder();
        order.setOrderState("0");
        order.setRakerId(rakerId);
        List<ZsyhServiceOrder> orderList = zsyhServiceOrderService.selectZsyhServiceOrderList(order);//新工单

        ZsyhServiceOrderApplymoney applymoney = new ZsyhServiceOrderApplymoney();
        applymoney.setRakerId(rakerId);
        applymoney.setApplyState("1");
        List<ZsyhServiceOrderApplymoney> applyMoneyList = zsyhServiceOrderApplymoneyService.selectZsyhServiceOrderApplymoneyList(applymoney);


        Map map = new HashedMap();
        map.put("orderListSize", orderList.size());
        map.put("applyMoneyListSize", applyMoneyList.size());

        return success("成功", map);
    }

    /**
     * 市县管理商 订单中心  各个订单状态列表
     * @param orderState 0新工单 1待预约 101待上门 102服务中 2已完成 203待结算 3已结算
     * 订单状态 001厂家保存（未下单） 0未接单（厂家下单）1已接单 101已预约 102服务中  201平台待审核 202厂家待审核
     *                   2已完成 203待拨款 3已支付 4已评价 5已取消 501师傅申请取消
     * @return
     */
    @RequestMapping("/getRakerServiceOrderList")
    @ResponseBody
    public AjaxResult getRakerServiceOrderList(String userId, String orderState, String pageNum, String pageSize, String key)throws Exception
    {
        ZsyhUserRepairstore store = zsyhUserRepairstoreService.selectZsyhUserRepairstoreByUserId(userId);
        String rakerId = store.getId();//市县id

        //orderState 订单状态 0未接单（厂家下单）1已接单 101已预约 102服务中 2已完成 201平台待审核 202厂家待审核 203待拨款 3已支付 4已评价 5已取消 501师傅申请取消 6系统自动取消
        Map map = new HashedMap();
        ZsyhServiceOrder order = new ZsyhServiceOrder();
        order.setOrderState(orderState);
        order.setRakerId(rakerId);

        if(EmptyUtils.isNotEmpty(pageNum) && EmptyUtils.isNotEmpty(pageSize)){
            int num = Integer.valueOf(pageNum);
            int size = Integer.valueOf(pageSize);
            num = (num - 1) * size;
            map.put("beginPos", num);
            map.put("pageSize", size);
        }
        map.put("key", key);
        order.setParams(map);
        List<ZsyhServiceOrder> orderList = zsyhServiceOrderService.selectZsyhServiceOrderList(order);//订单列表

        return success("成功", orderList);
    }


    /**
     * 市县管理商 订单中心 个人订单  各个订单状态列表
     * @param orderState 0新工单 1待预约 101待上门 102服务中 2已完成
     *      * 订单状态 0未接单 1已接单 101已预约 102服务中 2已完成 3已支付 4已评价 5已取消 6系统自动取消
     * @return
     */
    @RequestMapping("/getRakerPersonOrderList")
    @ResponseBody
    public AjaxResult getRakerPersonOrderList(String userId, String orderState, String pageNum, String pageSize, String key)throws Exception
    {
        ZsyhUserRepairstore store = zsyhUserRepairstoreService.selectZsyhUserRepairstoreByUserId(userId);
        String rakerId = store.getId();//市县id

        //orderState 订单状态 0未接单（厂家下单）1已接单 101已预约 102服务中 2已完成 201平台待审核 202厂家待审核 203待拨款 3已支付 4已评价 5已取消 501师傅申请取消 6系统自动取消
        Map map = new HashedMap();
        ZsyhPersonOrder order = new ZsyhPersonOrder();
        order.setOrderState(orderState);
        order.setRakerId(rakerId);
        if(EmptyUtils.isNotEmpty(pageNum) && EmptyUtils.isNotEmpty(pageSize)){
            int num = Integer.valueOf(pageNum);
            int size = Integer.valueOf(pageSize);
            num = (num - 1) * size;
            map.put("beginPos", num);
            map.put("pageSize", size);
        }
        map.put("key", key);
        order.setParams(map);
        List<ZsyhPersonOrder> orderList = zsyhPersonOrderService.selectZsyhPersonOrderList(order);//订单列表

        return success("成功", orderList);
    }


    /**
     * 市县管理商 个人中心 待结算 已结算
     * @param  orderFixdrawState 固定抽成费用支付状态 0未支付 1已支付
     * @return
     */
    @RequestMapping("/getRakerPersonOrderListSettlement")
    @ResponseBody
    public AjaxResult getRakerPersonOrderListSettlement(String userId, String orderFixdrawState, String pageNum, String pageSize, String key)throws Exception
    {
        ZsyhUserRepairstore store = zsyhUserRepairstoreService.selectZsyhUserRepairstoreByUserId(userId);
        String rakerId = store.getId();//市县id

        //orderState 订单状态 0未接单（厂家下单）1已接单 101已预约 102服务中 2已完成 201平台待审核 202厂家待审核 203待拨款 3已支付 4已评价 5已取消 501师傅申请取消 6系统自动取消
        Map map = new HashedMap();
        ZsyhPersonOrder order = new ZsyhPersonOrder();
        order.setRakerId(rakerId);
        if(EmptyUtils.isNotEmpty(pageNum) && EmptyUtils.isNotEmpty(pageSize)){
            int num = Integer.valueOf(pageNum);
            int size = Integer.valueOf(pageSize);
            num = (num - 1) * size;
            map.put("beginPos", num);
            map.put("pageSize", size);
        }
        map.put("key", key);
        order.setParams(map);
        order.setOrderFixdrawState(orderFixdrawState);

        map.put("orderState", "已完成");
        List<ZsyhPersonOrder> orderList = zsyhPersonOrderService.selectZsyhPersonOrderList(order);//订单列表

        return success("成功", orderList);
    }


    /**
     * 市县管理商 个人中心 结算订单
     * @return
     */
    @RequestMapping("/settlementPersonOrderRaker")
    @ResponseBody
    public AjaxResult settlementPersonOrderRaker(String orderIds)throws Exception
    {
        for(String orderId:orderIds.split(",")){
            ZsyhPersonOrder order = new ZsyhPersonOrder();
            order.setId(orderId);
            order.setOrderFixdrawState("1");
            zsyhPersonOrderService.updateZsyhPersonOrderApplet(order);
        }
        return success("成功");
    }

}
